package wci.intermediate;

import wci.intermediate.symtabimpl.*;

/**
 * <h1>SymTabFactory</h1>
 *
 * <p>
 * 符号表工厂，用来创建符号表中各类型的元素。因为整个框架都是语言无关的，所以这里<br>
 * 也要工厂来创建具体语言相关的符号表对象。
 * </p>
 *
 * <p>Copyright (c) 2009 by Ronald Mak</p>
 * <p>For instructional purposes only.  No warranties.</p>
 */
public class SymTabFactory
{
    /**
     * @return 以接口形式返回的符号表堆栈实现。
     */
    public static SymTabStack createSymTabStack()
    {
        return new SymTabStackImpl();
    }

    /**
     * @param nestingLevel 符号表层级
     * @return 以接口形式返回的符号表实现
     */
    public static SymTab createSymTab(int nestingLevel)
    {
        return new SymTabImpl(nestingLevel);
    }

    /**
     * 创建并返回一个符号表项
     * @param name ID名称(字面文本).
     * @param 容纳此表项的符号表
     * @return 以接口形式返回的符号表项
     */
    public static SymTabEntry createSymTabEntry(String name, SymTab symTab)
    {
        return new SymTabEntryImpl(name, symTab);
    }
}
